package com.leyou.item.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.leyou.item.dto.SkuDTO;
import com.leyou.item.entity.Sku;
import com.leyou.item.mapper.SkuMapper;
import com.leyou.item.service.SkuService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;
import java.util.Set;


@Service
public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuService {
    /**
     * 根据sku id集合批量查询sku
     *
     * @param ids sku id集合
     * @return 查询到的sku集合
     */
    @Override
    public List<SkuDTO> querySkuByIds(List<Long> ids) {
        List<Sku> skus = listByIds(ids);
        return SkuDTO.convertEntityList(skus);
    }

    /**
     * 根据spuId查询sku集合
     *
     * @param sid spuID
     * @return sku集合
     */
    @Override
    public List<SkuDTO> querySkuBySpuId(Long sid) {
        List<Sku> skuList = query().eq("spu_id", sid).list();
        return SkuDTO.convertEntityList(skuList);
    }

    /**
     * 批量减库存
     * @param map skuId 以及 减少的库存量
     */
    @Override
    public void minusStock(Map<String, Object> map) {
        Integer id = (Integer) map.get("id");
        update().eq("id", id)
                .set("stock", getById(id).getStock() - (Integer) map.get("stock"))
                .update();
    }
}
